package com.ruoyi.business.service.impl;

import java.util.List;
import java.util.Objects;

import com.ruoyi.common.exception.ServiceException;
import com.ruoyi.common.utils.DateUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.ruoyi.business.mapper.BizSellerMapper;
import com.ruoyi.business.domain.BizSeller;
import com.ruoyi.business.service.IBizSellerService;

/**
 * 商户申请Service业务层处理
 * 
 * @author ruoyi
 * @date 2024-05-17
 */
@Service
public class BizSellerServiceImpl implements IBizSellerService 
{
    @Autowired
    private BizSellerMapper bizSellerMapper;

    /**
     * 查询商户申请
     * 
     * @param sellerId 商户申请主键
     * @return 商户申请
     */
    @Override
    public BizSeller selectBizSellerBySellerId(Long sellerId)
    {
        return bizSellerMapper.selectBizSellerBySellerId(sellerId);
    }

    /**
     * 查询商户申请列表
     * 
     * @param bizSeller 商户申请
     * @return 商户申请
     */
    @Override
    public List<BizSeller> selectBizSellerList(BizSeller bizSeller)
    {
        return bizSellerMapper.selectBizSellerList(bizSeller);
    }

    /**
     * 新增商户申请
     * 
     * @param bizSeller 商户申请
     * @return 结果
     */
    @Override
    public int insertBizSeller(BizSeller bizSeller)
    {
        bizSeller.setCreateTime(DateUtils.getNowDate());
        return bizSellerMapper.insertBizSeller(bizSeller);
    }

    /**
     * 修改商户申请
     * 
     * @param bizSeller 商户申请
     * @return 结果
     */
    @Override
    public int updateBizSeller(BizSeller bizSeller)
    {
        bizSeller.setUpdateTime(DateUtils.getNowDate());
        return bizSellerMapper.updateBizSeller(bizSeller);
    }

    /**
     * 批量删除商户申请
     * 
     * @param sellerIds 需要删除的商户申请主键
     * @return 结果
     */
    @Override
    public int deleteBizSellerBySellerIds(Long[] sellerIds)
    {
        return bizSellerMapper.deleteBizSellerBySellerIds(sellerIds);
    }

    /**
     * 删除商户申请信息
     * 
     * @param sellerId 商户申请主键
     * @return 结果
     */
    @Override
    public int deleteBizSellerBySellerId(Long sellerId)
    {
        return bizSellerMapper.deleteBizSellerBySellerId(sellerId);
    }

    /**
     * 商户置顶操作
     *
     * @param bizSeller
     * @return
     */
    @Override
    public int sellerTop(BizSeller bizSeller) {
        BizSeller seller = this.selectBizSellerBySellerId(bizSeller.getSellerId());
        if (Objects.isNull(seller)) {
            throw new ServiceException("查找的商户不存在");
        }
        if (Objects.equals(seller.getIsTop(), 1)) {
            throw new ServiceException("此商户已经置顶了");
        }
        int topCount = this.findTopCount();
        if (topCount>2) {
            throw new ServiceException("置顶数量已达上限,已经有2个商户置顶");
        }
        return this.updateBizSeller(bizSeller);
    }

    /**
     * 查找置顶的数量
     *
     * @return
     */
    @Override
    public int findTopCount() {
        return this.bizSellerMapper.findTopCount();
    }

    /**
     * 待审核的商户总数
     *
     * @param status
     * @return
     */
    @Override
    public long selectBizSellerByAudit(Integer status) {
        return bizSellerMapper.selectBizSellerByAudit(status);
    }
}
